package com.example.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.domain.dto.LikedDTO;
import com.example.domain.entity.CommentLike;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author readpage
 * @since 2023-02-03 16:15
 */
public interface CommentLikeService extends IService<CommentLike> {

    /**
     *  查询用户是否点赞
     * @param likedDTO
     * @return int 2: mysql点赞 1: redis点赞 0: 不点赞
     */
    int isLiked(LikedDTO likedDTO);

    /**
     * 评论点赞
     * @param likedDTO
     */
    boolean liked(LikedDTO likedDTO);

    /**
     * 获取redis中的评论点赞数量
     * @param commentId
     * @return void
     */
    int getLikeCount(Long commentId);

    /**
     * 根据用户id获取点赞的评论id列表
     * @param uid
     * @return
     */
    List<Long> cidListByUid(Long uid);

    /**
     * redis同步点赞数量和状态到mysql
     */
    boolean syncLike();

    /**
     * 根据key查询评论点赞key列表
     * @param list uid + cid
     * @return key uid + cid
     */
    List<String> getKeyList(List<String> list);

    /**
     * 批量添加评论点赞
     * @param list
     * @return
     */
    boolean saveNodupBatch(List<CommentLike> list);

    /**
     * 批量删除评论点赞
     * @param list uid+cid 用户id+评论id key
     */
    boolean removeBatchByCid(List<String> list);

}
